package concoursbelote;

import java.util.ArrayList;

/**
 * Permet de créer un bar
 * @author Guillaume
 *
 */
public class Bar 
{
	//*********************************************************
	//			ATTRIBUTS
	//*********************************************************
	private String nom;
	private int nbrTables;
	private int nbrChaises;
	private double caisse;
	
	private Patronne patronne;
	private Barman barman;
	
	public ArrayList<Client> clients = new ArrayList<Client>();
	public ArrayList<Client> clientsBannis = new ArrayList<Client>();
	public ArrayList<Serveur> serveur = new ArrayList<Serveur>();
	public ArrayList<Boissons> mesBoissons = new ArrayList<Boissons>();
	public ArrayList<Fournisseur> mesFournisseurs = new ArrayList<Fournisseur>();
	
	//*********************************************************
	//			CONSTRUCTEURS
	//*********************************************************

	/**
	 * Permet de créer un bar avec uniquement son nom
	 * @author Guillaume
	 * @param nom
	 */
	public Bar(String nom) 
	{
		this.nom = nom;
	}

	/**
	 * Permet de créer un bar avec son nom et son nombre de tables en utilisant le constructeur précédent
	 * @author Guillaume
	 * @param nom
	 * @param nbrTables
	 */
	public Bar(String nom, int nbrTables) 
	{
		this(nom);
		this.nbrTables = nbrTables;
	}
	
	/**
	 * Permet de créer un bar avec son nom, son nombre de tables et son nombre de chaises en utilisant le constructeur précédent
	 * @author Guillaume
	 * @param nom
	 * @param nbrTables
	 * @param nbrChaises
	 */
	public Bar(String nom, int nbrTables, int nbrChaises) 
	{
		this(nom, nbrTables);
		this.nbrChaises = nbrChaises;
	}
	
	/**
	 * Permet de créer un bar avec son nom, son nombre de tables et son nombre de chaises en utilisant le constructeur précédent
	 * @author Guillaume
	 * @param nom
	 * @param nbrTables
	 * @param nbrChaises
	 * @param caisse
	 */
	public Bar(String nom, int nbrTables, int nbrChaises, double caisse) 
	{
		this(nom, nbrTables);
		this.nbrChaises = nbrChaises;
		this.caisse = caisse;
	}
	
	/**
	 * Permet de créer un bar avec son nom, son nombre de tables, son nombre de chaises , une ptronne en utilisant le constructeur précédent
	 * @param nom
	 * @param nbrTables
	 * @param nbrChaises
	 * @param caisse
	 * @param patronne
	 */
	public Bar(String nom, int nbrTables, int nbrChaises, double caisse,  Patronne patronne) 
	{
		this(nom, nbrTables, nbrChaises, caisse);
		this.patronne = patronne;
	}

	/**
	 * Permet de créer un bar avec son nom, son nombre de tables, son nombre de chaises ,  une ptronne et un barman en utilisant le constructeur précédent
	 * @author Guillaume
	 * @param nom
	 * @param nbrTables
	 * @param nbrChaises
	 * @param caisse
	 * @param patronne
	 * @param barman
	 */
	public Bar(String nom, int nbrTables, int nbrChaises, double caisse, Patronne patronne, Barman barman) 
	{
		this(nom, nbrTables, nbrChaises, caisse,  patronne);
		this.barman = barman;
	}

	/**
	 * Permet de créer un bar avec son nom, son nombre de tables et son nombre de chaises et une liste de client en utilisant le constructeur précédent
	 * @author Guillaume
	 * @param nom
	 * @param nbrTables
	 * @param nbrChaises
	 * @param patronne
	 * @param barman
	 * @param ArrayList(Client) client
	 * @param ArrayList(Client) client_banni
	 * @param ArrayList(Serveur) serveur
	 * @param ArrayList(Boisson) boissons
	 */
	public Bar(String nom, int nbrTables, int nbrChaises, double caisse, Patronne patronne,  Barman barman, ArrayList<Client> client, ArrayList<Client> client_banni, ArrayList<Serveur> serveur, ArrayList<Boissons> boisson, ArrayList<Fournisseur> fournisseur) 
	{
		this(nom, nbrTables, nbrChaises, caisse, patronne, barman);
		this.clients = client;
		this.clientsBannis = client_banni;
		this.serveur = serveur;
		this.mesBoissons = boisson;	
		this.mesFournisseurs = fournisseur;
	}

	//*********************************************************
	//			GETTEURS
	//*********************************************************
	public String getNom() 
	{
		return nom;
	}
	public int getNbrTables() 
	{
		return nbrTables;
	}
	public int getNbrChaises() 
	{
		return nbrChaises;
	}
	public double getCaisse() 
	{
		return caisse;
	}
	public Patronne getPatronne() 
	{
		return patronne;
	}
	public Barman getBarman() 
	{
		return barman;
	}

	//*********************************************************
	//			SETTEURS
	//*********************************************************
	public void setNbrTables(int nbrTables) 
	{
		this.nbrTables = nbrTables;
	}
	public void setNbrChaises(int nbrChaises) 
	{
		this.nbrChaises = nbrChaises;
	}
	public void setCaisse(double caisse) 
	{
		this.caisse = caisse;
	}
	
	//*********************************************************
	//			METHODS
	//*********************************************************
	
	/**
	 * Permet de calculer le nombre de chaise necessaire pour les tables et le bar
	 * @author Guillaume
	 * @param nbrTables
	 * @return nbrChaises
	 */
	public int nbrChaises(int nbrTables)
	{
		int nbrChaises = nbrTables * 4;
		return nbrChaises;
	}	
}